import React, { useEffect, useState } from 'react';
import { Card, Spin, message } from 'antd';
import { useNavigate } from 'react-router-dom';

const RiskPreferenceInfo = () => {
    const [loading, setLoading] = useState(true);
    const [preferences, setPreferences] = useState(null);
    const navigate = useNavigate();

    // 数字到文字的映射
    const expMapping = {
        1: '从未投资过',
        2: '有过银行理财或基金经验',
        3: '有过股票投资经验',
        4: '长期活跃于股市或衍生品市场'
    };

    const maxlossMapping = {
        1: '不能接受任何本金损失',
        2: '接受 5% 以内的亏损',
        3: '接受 10% 左右的亏损',
        4: '接受超过 20% 的高波动风险'
    };

    const revenueMapping = {
        1: '少于 10 万',
        2: '10 万 - 30 万',
        3: '30 万 - 100 万',
        4: '超过 100 万'
    };

    const goalMapping = {
        1: '保本为主',
        2: '稳健增值',
        3: '平衡收益与风险',
        4: '高收益，愿意承担风险'
    };

    useEffect(() => {
        try {
            setLoading(true);
            // 从 localStorage 获取用户风险偏好信息
            const storedPreferences = localStorage.getItem('investment_preferences');
            if (storedPreferences) {
                setPreferences(JSON.parse(storedPreferences)); // 解析 JSON 格式的风险偏好信息
            } else {
                message.error('用户风险偏好信息未找到，请填写问卷');
                navigate('/risk-preference'); // 跳转到问卷页面
            }
        } catch (error) {
            message.error('加载用户风险偏好信息失败，请重试');
        } finally {
            setLoading(false);
        }
    }, [navigate]);

    if (loading) {
        return <Spin tip="加载中..." />;
    }

    if (!preferences) {
        return <div>未找到风险偏好信息</div>;
    }

    return (
        <Card title="风险偏好信息" style={{ maxWidth: 400, margin: '0 auto' }}>
            <p>风险偏好：{preferences.riskpreference}</p>
            <p>投资经验：{expMapping[preferences.exp]}</p>
            <p>可接受的最大单次损失：{maxlossMapping[preferences.maxloss]}</p>
            <p>年收入水平：{revenueMapping[preferences.revenue]}</p>
            <p>投资目标：{goalMapping[preferences.goal]}</p>
        </Card>
    );
};

export default RiskPreferenceInfo;